package com.doubi.utils;

import java.math.BigDecimal;

/**
 * 功能说明：BigDecimal工具类
 * @author  MrDoubi 2018-12-21 11:44:29
 */
public class BigDecimalUtil {

    /**
     * 功能说明：BigDecimal对象相加，param1 + param2
     * @author  MrDoubi 2018-12-21 11:44:36
     * @param v1        BigDecimal.doubleValue();
     * @param v2        BigDecimal.doubleValue();
     * @return          返回相加后的结果
     */
    public static BigDecimal add(double v1, double v2){
        BigDecimal b1 = new BigDecimal(Double.toString(v1));
        BigDecimal b2 = new BigDecimal(Double.toString(v2));
        return b1.add(b2);
    }

    /**
     * 功能说明：BigDecimal对象相减，param1 - param2
     * @author  MrDoubi 2018-12-21 11:46:36
     * @param v1        BigDecimal.doubleValue();
     * @param v2        BigDecimal.doubleValue();
     * @return          返回相减后的结果
     */
    public static BigDecimal sub(double v1,double v2){
        BigDecimal b1 = new BigDecimal(Double.toString(v1));
        BigDecimal b2 = new BigDecimal(Double.toString(v2));
        return b1.subtract(b2);
    }

    /**
     * 功能说明：BigDecimal对象相乘，param1 * param2
     * @author  MrDoubi 2018-12-21 11:47:15
     * @param v1        BigDecimal.doubleValue();
     * @param v2        BigDecimal.doubleValue();
     * @return          返回相乘后的结果
     */
    public static BigDecimal mul(double v1,double v2){
        BigDecimal b1 = new BigDecimal(Double.toString(v1));
        BigDecimal b2 = new BigDecimal(Double.toString(v2));
        return b1.multiply(b2);
    }

    /**
     * 功能说明：BigDecimal对象相除并四舍五入保留两位有效数字，param1 / param2
     * @author  MrDoubi 2018-12-21 11:48:35
     * @param v1        BigDecimal.doubleValue();
     * @param v2        BigDecimal.doubleValue();
     * @return          返回相除后的结果
     */
    public static BigDecimal div(double v1,double v2){
        BigDecimal b1 = new BigDecimal(Double.toString(v1));
        BigDecimal b2 = new BigDecimal(Double.toString(v2));
        return b1.divide(b2,2,BigDecimal.ROUND_HALF_UP);//四舍五入,保留2位小数

        //除不尽的情况
    }

}
